package com.monkeyboy.search.lucene;

import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
import org.apache.lucene.util.BytesRef;

/**
 * @author Gavin<br>
 *         分词器
 */
public class AnalyzerTest {
	public static void main(String[] args) throws IOException {
		String str = "深圳欢乐谷，大剧院";

		// 单字分词
		// Analyzer analyzer = new StandardAnalyzer();// 使用默认的停用词

		// 二分法分词
		// Analyzer analyzer = new CJKAnalyzer();// 使用默认的停用词

		// 词库分词 需要导jar包 lucene-analyzers-smartcn.jar
		 Analyzer analyzer = new SmartChineseAnalyzer();// 使用默认的停用词

		// 词库分词 智能分词器
		//Analyzer analyzer = new SmartChineseAnalyzer(new CharArraySet(Arrays.asList("的", "了", "啊"), true));// 使用自定义的停用词集合（就是不会对这些词进行分词）

		// 对指定的字符串进行分词
		TokenStream ts = analyzer.tokenStream(null, str);

		ts.reset(); // 先要对tokenStream执行reset
		// 采用循环，不断地获取下一个token
		while (ts.incrementToken()) {
//			// 获取其中token信息
			TermToBytesRefAttribute attr = ts.getAttribute(TermToBytesRefAttribute.class);
			final BytesRef bytes = attr.getBytesRef();
			System.out.println(bytes.utf8ToString());
		}
		ts.close();

	}
}
